package org.javaboy.consumer01.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class QueueConfig {

    // 队列名称
    public static final String QUEUE_NAME = "javaboy_simple_queue";

    /**
     * 声明一个队列
     * 只需要向 Spring 容器中注入一个 Queue 对象即可
     *
     * @return
     */
    @Bean
    Queue simpleQueue() {
        Map<String, Object> args = new HashMap<>();
        // 队列消息过期时间，单位毫秒，到达该队列中的消息，10s 后消息没有被消费，则消息过期
        args.put("x-message-ttl", 10000);
        //设置私信交换机
        args.put("x-dead-letter-exchange", DlxConfig.DLX_EXCHANGE_NAME);
        //设置死信 routingKey
        args.put("x-dead-letter-routing-key", DlxConfig.DLX_QUEUE_NAME);
        // 队列名称，是否持久化(当MQ重启之后，这个队列是否还存在)，
        // 是否排他（如果排他，则这个队列由哪个 Connection 创建，则哪个 con 才能给这个队列发消息），是否自动删除
        //autoDelete 队列没有消费者时，是否自动删除
        return new Queue(QUEUE_NAME, true, false, false, args);
    }
}
